home *** CD-ROM | disk | FTP | other *** search
- Amiga Plot V1.3a Joe Martin 7/88 (C)Copyright 1988
-
-
- This program is not public domain. All rights retained. Permision is
- granted to freely distribute this program as long as all documentation and
- notices remain intact. Charges for such distribution are NOT permitted except
- as a nominal disk charge !!
-
- If you find this program useful, entertaining or educational, please donate
- $20 to the author. Source code is available for an additional $20 by sending
- check or money order to the address provided below. Donations will encourage
- updates and more features.
-
- ****************************************************************************
-
-
- Amiga Plot is a three dimesional mathematical function plotter.It takes
- a function, derived by the user, parses it into a partially compiled form and
- then calculates coordinates to be placed in the xyz system. AmigaPlot use
- hidden line removal based on a principle known as the painters algorithm.
- Each time AmigaPlot goes to the screen it places a filled polygon. Starting
- from the most distant part of the plot it is constantly placing filled
- polygons in front of other polygons there by covering the hidden portions of
- the plot. Many aspects of the plot are user variable so that almost any
- combination of rotations, perspectives, and parameters for any function can
- produce infinite results. AmigaPlot is not intended for statistical analysis
- and the precision of the plot or its scale are not guaranteed.
- The use of color in the plot can produce very pleasing effects
- especially when a feathered pallet is used. The idea of AmigaPlot is to
- provide an artistic approach to the sometimes dry subjects of Analytical
- Geometry and Trigonometry.
-
-
- AmigaPlot was compiled on the Aztec C Compiler 3.6a
- **** Minimum memory 512K - it uses most of it *****
- ************ 1 or 2 meg recommended **************
-
- Address any questions, comments or bugs to:
-
- Joe Martin
- Hobbit Hole 1-904-243-6219 8N1
-
- or
-
- Joe Martin
- 2702 Willow Grove Ln.
- Ft. Walton Bch. Fl 32548
-
- ****************************************************************************
-
- known bugs:
-
- 1-some functions can produce values out of range.
- 2-extreme values can burden the Amiga clipping routines by requiring
- more chip memory than is available !
- (I've tried to help them out a little)
- 3-Rotations approaching 90 degrees will give distorted results(not
- really a bug)
- I'm working on better error checking but it'll be slow to come.
- The Parser does very little error checking right now so watch your
- spelling on trig function names.
-
- ****************************************************************************
-
- 1.3a
- -Fixed bug in file requestor that didn't follow paths correctly.
- -Loads in special Images for windows etc.(3.6a would have booted me out
- of small data otherwise.
- -User friendly rotation parms(degrees) and smoothing parms(xincr and
- yincr).
-
- ****************************************************************************
-
- 1.3 additions:
-
- 1- save/load parameters and IFF support.
- 2- macro capability in function window.
- 3- sample functions(parms directory).
- 4- increased color span resolution to include floating point.
- 5- cosmetic window update.
-
- Let's get to it !
-
- ********** First MAKE SURE YOUR STACK IS SET TO AT LEAST 20000 *************
-
- AmigaPlot is initialized at the CLI by 'Run Plot' (don't forget to set stack
- 20000 first !)
-
- For convenience, the directory 'parms' is included and includes numerous
- function examples. These can be loaded from the 'Files' menu and make it
- extremely easy to play with and to alter different functions known to yield
- satisfatory results.
- Also the directory 'pic' is included with one example of an Iff pic. This
- picture can be viewed with any showiff program.
-
- Three windows appear-
- 1- AmigaPlot window - for the plots.
- 2- Parms window - gadgets to select and change parameters.
- 3- Function window - for function input only.
-
- There are three menus available for some parmameter changes, color etc.
-
- Parms Window:
-
- Gadgets:
- Start starts plot
-
- Stop stops plot in progress. Any parameter changes will go
- into effect when the plot is restarted.
-
- YRot changes perspective about the Y axis. range -90 - 90 degrees
- XRot changes perspective about the X axis. range -90 - 90 degrees
-
- Object changes depth perspective in conjuction with Image
- distance from viewer to object
- Image changes depth perspective in conjuction with Object
- distance from viewer to Image
-
- XRan This number represents the the outside dimensions of the loop
- which will provide a value for the 'X' variable in the func-
- tion. Ex XRan: 10 means a loop from -10 to 10
- YRan Dimensions the loop for the Y variable in the function
-
- Suggested ranges are from 25 down to 5.
-
- XIncr the step increment for the XRan loop 1 - 8
- YIncr the step increment for the YRan loop 1 - 8
-
- Adjusting the X and Y increments will give the plot a smooth or jagged
- appearence on most plots. Smaller increments take a lot longer to plot(much
- more computing), but produce better pictures. '1' is smoothest, '8' coarsest.
-
- XTrans this moves the center of the plot about the X axis
- YTrans this moves the center of the plot about the Y axis
-
- ScX this will adjust the width of the plot by the Scale factor
- ScY this will adjust the height of the plot by the Scale factor
-
-
- Function Gadgets:
-
- There are 3 string gadgets available for function input:
-
- f(x,y): this gadget is for entry of main function. Upper and lower case
- is acceptable. Any operators, grouping sysbols, or trig function
- names given below are acceptable.
-
- Legal variable names : X,Y,A,B
-
- A= : this gadget is useful for subfunctions and expressions and serves
- as a macro for the main function f(x,y). If your main
- function(f(x,y)) contains the 'A' variable, then this macro MUST
- be defined in this gadget !
-
- B= : this gadget is useful for subfunctions and expressions and serves
- as a macro for the main function f(x,y). If your main
- function(f(x,y)) contains the 'B' variable, then this macro MUST
- be defined in this gadget !
-
- Editing : same as for any string gadget - cursor keys, del, backSp
- etc.
-
- operations : +,-,*,/ divsion by zero is trapped.
- ^ to the power of
-
- grouping : ()
-
- functions : ABS() absolute value of
- SQRT() Square root of
- SQR() Square of
- SIN() Sine of
- ASIN() ArcSine of
- COS() Cosine of
- ACOS() ArcCosine of
- TAN() Tangent of
- ATAN() Arctangent of
- LN() Natural Logarithm of
- LOG() Base 10 Log of
- EXP() Exponential of
-
- Menus:
-
- File Menu
-
- Quit - Quit AmigaPlot (bye)
- save
- parms - this will save all parameters for easy retrieval. A file
- requestor will prompt you for the file name. File name
- extensions of '.parms' are recommended..
-
- IFF - this will save the current visible screen to an IFF format
- image. A file requestor will prompt you for the file name and
- extensions of '.pic' are recommended.
-
- load
- parms- this will load a set of parameters, functions, window sizes,
- color map etc. When plot is first run 'Default.parms' is
- loaded if available. If you have a favorite function. then it
- can be loaded at startup by saving its' parms as
- 'Default.parms'.
-
- Parameters Menu - Same as the Parms gadgets(just for convience)
-
- Display Menu -
-
- Color Map - User selects color palette
-
- ColorSpan - User selects color position/span(what heigth you want each color
- to kick in. Decimal fractions can be entered for
- finer color resolution.
-
- XHatch - Outlines complete polygon on screen
-
- Spec.Parms - Two gadgets:
-
- Clip TAN - This is an adjustment for the TAN function which usually
- produces very high values(out off range). You can
- adjust the tops of these spikes.
-
- Scale/0 - This one can adjust any case of division by zero. In other
- words, instead of dividing by zero(which is undefined)
- you can divide by the scale value.
-
-
- ****************************************************************************
-
- Here are some sample functions :
-
- 1) COS((X^2+Y^2)/10)
- Object:50 Image:650 XRange:10 YRange:10 XYIncr:.5
-
- 2) 2*SIN((X^2-Y^2)/10)
- Object:50 Image:650 XRange:10 YRange:10 XYIncr:.5
-
- 3) .005*((X/Y)^2-(Y/X)^2)
- Object:50 Image:650 XRange:10 YRange:10 XYIncr:.5
-
- 4) 3*SIN(-.05*(X^2-Y^2))-2*COS(.1*(X^2+Y^2))
- Object:50 Image:650 XRange:10 YRange:10 XYIncr:.5
-
- 5) 4*(5*EXP(-(X^2+Y^2)/60)*SIN((X^2-Y^2)/10))
- Object:130 Image:750 XRange:20 YRange:20 XYIncr:.5
-
- 6) TAN((X^2+Y^2)/50)
- Object:80 Image:750 XRange:12 YRange:12 XYIncr:.5
-
-
- **** Have Fun ****
-
- ****************************************************************************
-